/*
 * MIT License
 *
 * Copyright (c) 2023 OrdinaryRoad
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: douyin.proto

// Protobuf Java Version: 3.25.3
package tech.ordinaryroad.live.chat.client.codec.douyin.protobuf;

/**
 * Protobuf type {@code PayGrade}
 */
public final class PayGrade extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:PayGrade)
    PayGradeOrBuilder {
private static final long serialVersionUID = 0L;
  // Use PayGrade.newBuilder() to construct.
  private PayGrade(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private PayGrade() {
    name_ = "";
    nextName_ = "";
    gradeDescribe_ = "";
    gradeIconList_ = java.util.Collections.emptyList();
    nextPrivileges_ = "";
    gradeBanner_ = "";
  }

  @Override
  @SuppressWarnings({"unused"})
  protected Object newInstance(
      UnusedPrivateParameter unused) {
    return new PayGrade();
  }

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return Douyin.internal_static_PayGrade_descriptor;
  }

  @Override
  protected FieldAccessorTable
      internalGetFieldAccessorTable() {
    return Douyin.internal_static_PayGrade_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            PayGrade.class, Builder.class);
  }

  private int bitField0_;
  public static final int TOTALDIAMONDCOUNT_FIELD_NUMBER = 1;
  private long totalDiamondCount_ = 0L;
  /**
   * <code>int64 totalDiamondCount = 1;</code>
   * @return The totalDiamondCount.
   */
  @Override
  public long getTotalDiamondCount() {
    return totalDiamondCount_;
  }

  public static final int DIAMONDICON_FIELD_NUMBER = 2;
  private Image diamondIcon_;
  /**
   * <code>.Image diamondIcon = 2;</code>
   * @return Whether the diamondIcon field is set.
   */
  @Override
  public boolean hasDiamondIcon() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   * <code>.Image diamondIcon = 2;</code>
   * @return The diamondIcon.
   */
  @Override
  public Image getDiamondIcon() {
    return diamondIcon_ == null ? Image.getDefaultInstance() : diamondIcon_;
  }
  /**
   * <code>.Image diamondIcon = 2;</code>
   */
  @Override
  public ImageOrBuilder getDiamondIconOrBuilder() {
    return diamondIcon_ == null ? Image.getDefaultInstance() : diamondIcon_;
  }

  public static final int NAME_FIELD_NUMBER = 3;
  @SuppressWarnings("serial")
  private volatile Object name_ = "";
  /**
   * <code>string name = 3;</code>
   * @return The name.
   */
  @Override
  public String getName() {
    Object ref = name_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      name_ = s;
      return s;
    }
  }
  /**
   * <code>string name = 3;</code>
   * @return The bytes for name.
   */
  @Override
  public com.google.protobuf.ByteString
      getNameBytes() {
    Object ref = name_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      name_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int ICON_FIELD_NUMBER = 4;
  private Image icon_;
  /**
   * <code>.Image icon = 4;</code>
   * @return Whether the icon field is set.
   */
  @Override
  public boolean hasIcon() {
    return ((bitField0_ & 0x00000002) != 0);
  }
  /**
   * <code>.Image icon = 4;</code>
   * @return The icon.
   */
  @Override
  public Image getIcon() {
    return icon_ == null ? Image.getDefaultInstance() : icon_;
  }
  /**
   * <code>.Image icon = 4;</code>
   */
  @Override
  public ImageOrBuilder getIconOrBuilder() {
    return icon_ == null ? Image.getDefaultInstance() : icon_;
  }

  public static final int NEXTNAME_FIELD_NUMBER = 5;
  @SuppressWarnings("serial")
  private volatile Object nextName_ = "";
  /**
   * <code>string nextName = 5;</code>
   * @return The nextName.
   */
  @Override
  public String getNextName() {
    Object ref = nextName_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      nextName_ = s;
      return s;
    }
  }
  /**
   * <code>string nextName = 5;</code>
   * @return The bytes for nextName.
   */
  @Override
  public com.google.protobuf.ByteString
      getNextNameBytes() {
    Object ref = nextName_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      nextName_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int LEVEL_FIELD_NUMBER = 6;
  private long level_ = 0L;
  /**
   * <code>int64 level = 6;</code>
   * @return The level.
   */
  @Override
  public long getLevel() {
    return level_;
  }

  public static final int NEXTICON_FIELD_NUMBER = 7;
  private Image nextIcon_;
  /**
   * <code>.Image nextIcon = 7;</code>
   * @return Whether the nextIcon field is set.
   */
  @Override
  public boolean hasNextIcon() {
    return ((bitField0_ & 0x00000004) != 0);
  }
  /**
   * <code>.Image nextIcon = 7;</code>
   * @return The nextIcon.
   */
  @Override
  public Image getNextIcon() {
    return nextIcon_ == null ? Image.getDefaultInstance() : nextIcon_;
  }
  /**
   * <code>.Image nextIcon = 7;</code>
   */
  @Override
  public ImageOrBuilder getNextIconOrBuilder() {
    return nextIcon_ == null ? Image.getDefaultInstance() : nextIcon_;
  }

  public static final int NEXTDIAMOND_FIELD_NUMBER = 8;
  private long nextDiamond_ = 0L;
  /**
   * <code>int64 nextDiamond = 8;</code>
   * @return The nextDiamond.
   */
  @Override
  public long getNextDiamond() {
    return nextDiamond_;
  }

  public static final int NOWDIAMOND_FIELD_NUMBER = 9;
  private long nowDiamond_ = 0L;
  /**
   * <code>int64 nowDiamond = 9;</code>
   * @return The nowDiamond.
   */
  @Override
  public long getNowDiamond() {
    return nowDiamond_;
  }

  public static final int THISGRADEMINDIAMOND_FIELD_NUMBER = 10;
  private long thisGradeMinDiamond_ = 0L;
  /**
   * <code>int64 thisGradeMinDiamond = 10;</code>
   * @return The thisGradeMinDiamond.
   */
  @Override
  public long getThisGradeMinDiamond() {
    return thisGradeMinDiamond_;
  }

  public static final int THISGRADEMAXDIAMOND_FIELD_NUMBER = 11;
  private long thisGradeMaxDiamond_ = 0L;
  /**
   * <code>int64 thisGradeMaxDiamond = 11;</code>
   * @return The thisGradeMaxDiamond.
   */
  @Override
  public long getThisGradeMaxDiamond() {
    return thisGradeMaxDiamond_;
  }

  public static final int PAYDIAMONDBAK_FIELD_NUMBER = 12;
  private long payDiamondBak_ = 0L;
  /**
   * <code>int64 payDiamondBak = 12;</code>
   * @return The payDiamondBak.
   */
  @Override
  public long getPayDiamondBak() {
    return payDiamondBak_;
  }

  public static final int GRADEDESCRIBE_FIELD_NUMBER = 13;
  @SuppressWarnings("serial")
  private volatile Object gradeDescribe_ = "";
  /**
   * <code>string gradeDescribe = 13;</code>
   * @return The gradeDescribe.
   */
  @Override
  public String getGradeDescribe() {
    Object ref = gradeDescribe_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      gradeDescribe_ = s;
      return s;
    }
  }
  /**
   * <code>string gradeDescribe = 13;</code>
   * @return The bytes for gradeDescribe.
   */
  @Override
  public com.google.protobuf.ByteString
      getGradeDescribeBytes() {
    Object ref = gradeDescribe_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      gradeDescribe_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int GRADEICONLIST_FIELD_NUMBER = 14;
  @SuppressWarnings("serial")
  private java.util.List<GradeIcon> gradeIconList_;
  /**
   * <code>repeated .GradeIcon gradeIconList = 14;</code>
   */
  @Override
  public java.util.List<GradeIcon> getGradeIconListList() {
    return gradeIconList_;
  }
  /**
   * <code>repeated .GradeIcon gradeIconList = 14;</code>
   */
  @Override
  public java.util.List<? extends GradeIconOrBuilder>
      getGradeIconListOrBuilderList() {
    return gradeIconList_;
  }
  /**
   * <code>repeated .GradeIcon gradeIconList = 14;</code>
   */
  @Override
  public int getGradeIconListCount() {
    return gradeIconList_.size();
  }
  /**
   * <code>repeated .GradeIcon gradeIconList = 14;</code>
   */
  @Override
  public GradeIcon getGradeIconList(int index) {
    return gradeIconList_.get(index);
  }
  /**
   * <code>repeated .GradeIcon gradeIconList = 14;</code>
   */
  @Override
  public GradeIconOrBuilder getGradeIconListOrBuilder(
      int index) {
    return gradeIconList_.get(index);
  }

  public static final int SCREENCHATTYPE_FIELD_NUMBER = 15;
  private long screenChatType_ = 0L;
  /**
   * <code>int64 screenChatType = 15;</code>
   * @return The screenChatType.
   */
  @Override
  public long getScreenChatType() {
    return screenChatType_;
  }

  public static final int IMICON_FIELD_NUMBER = 16;
  private Image imIcon_;
  /**
   * <code>.Image imIcon = 16;</code>
   * @return Whether the imIcon field is set.
   */
  @Override
  public boolean hasImIcon() {
    return ((bitField0_ & 0x00000008) != 0);
  }
  /**
   * <code>.Image imIcon = 16;</code>
   * @return The imIcon.
   */
  @Override
  public Image getImIcon() {
    return imIcon_ == null ? Image.getDefaultInstance() : imIcon_;
  }
  /**
   * <code>.Image imIcon = 16;</code>
   */
  @Override
  public ImageOrBuilder getImIconOrBuilder() {
    return imIcon_ == null ? Image.getDefaultInstance() : imIcon_;
  }

  public static final int IMICONWITHLEVEL_FIELD_NUMBER = 17;
  private Image imIconWithLevel_;
  /**
   * <code>.Image imIconWithLevel = 17;</code>
   * @return Whether the imIconWithLevel field is set.
   */
  @Override
  public boolean hasImIconWithLevel() {
    return ((bitField0_ & 0x00000010) != 0);
  }
  /**
   * <code>.Image imIconWithLevel = 17;</code>
   * @return The imIconWithLevel.
   */
  @Override
  public Image getImIconWithLevel() {
    return imIconWithLevel_ == null ? Image.getDefaultInstance() : imIconWithLevel_;
  }
  /**
   * <code>.Image imIconWithLevel = 17;</code>
   */
  @Override
  public ImageOrBuilder getImIconWithLevelOrBuilder() {
    return imIconWithLevel_ == null ? Image.getDefaultInstance() : imIconWithLevel_;
  }

  public static final int LIVEICON_FIELD_NUMBER = 18;
  private Image liveIcon_;
  /**
   * <code>.Image liveIcon = 18;</code>
   * @return Whether the liveIcon field is set.
   */
  @Override
  public boolean hasLiveIcon() {
    return ((bitField0_ & 0x00000020) != 0);
  }
  /**
   * <code>.Image liveIcon = 18;</code>
   * @return The liveIcon.
   */
  @Override
  public Image getLiveIcon() {
    return liveIcon_ == null ? Image.getDefaultInstance() : liveIcon_;
  }
  /**
   * <code>.Image liveIcon = 18;</code>
   */
  @Override
  public ImageOrBuilder getLiveIconOrBuilder() {
    return liveIcon_ == null ? Image.getDefaultInstance() : liveIcon_;
  }

  public static final int NEWIMICONWITHLEVEL_FIELD_NUMBER = 19;
  private Image newImIconWithLevel_;
  /**
   * <code>.Image newImIconWithLevel = 19;</code>
   * @return Whether the newImIconWithLevel field is set.
   */
  @Override
  public boolean hasNewImIconWithLevel() {
    return ((bitField0_ & 0x00000040) != 0);
  }
  /**
   * <code>.Image newImIconWithLevel = 19;</code>
   * @return The newImIconWithLevel.
   */
  @Override
  public Image getNewImIconWithLevel() {
    return newImIconWithLevel_ == null ? Image.getDefaultInstance() : newImIconWithLevel_;
  }
  /**
   * <code>.Image newImIconWithLevel = 19;</code>
   */
  @Override
  public ImageOrBuilder getNewImIconWithLevelOrBuilder() {
    return newImIconWithLevel_ == null ? Image.getDefaultInstance() : newImIconWithLevel_;
  }

  public static final int NEWLIVEICON_FIELD_NUMBER = 20;
  private Image newLiveIcon_;
  /**
   * <code>.Image newLiveIcon = 20;</code>
   * @return Whether the newLiveIcon field is set.
   */
  @Override
  public boolean hasNewLiveIcon() {
    return ((bitField0_ & 0x00000080) != 0);
  }
  /**
   * <code>.Image newLiveIcon = 20;</code>
   * @return The newLiveIcon.
   */
  @Override
  public Image getNewLiveIcon() {
    return newLiveIcon_ == null ? Image.getDefaultInstance() : newLiveIcon_;
  }
  /**
   * <code>.Image newLiveIcon = 20;</code>
   */
  @Override
  public ImageOrBuilder getNewLiveIconOrBuilder() {
    return newLiveIcon_ == null ? Image.getDefaultInstance() : newLiveIcon_;
  }

  public static final int UPGRADENEEDCONSUME_FIELD_NUMBER = 21;
  private long upgradeNeedConsume_ = 0L;
  /**
   * <code>int64 upgradeNeedConsume = 21;</code>
   * @return The upgradeNeedConsume.
   */
  @Override
  public long getUpgradeNeedConsume() {
    return upgradeNeedConsume_;
  }

  public static final int NEXTPRIVILEGES_FIELD_NUMBER = 22;
  @SuppressWarnings("serial")
  private volatile Object nextPrivileges_ = "";
  /**
   * <code>string nextPrivileges = 22;</code>
   * @return The nextPrivileges.
   */
  @Override
  public String getNextPrivileges() {
    Object ref = nextPrivileges_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      nextPrivileges_ = s;
      return s;
    }
  }
  /**
   * <code>string nextPrivileges = 22;</code>
   * @return The bytes for nextPrivileges.
   */
  @Override
  public com.google.protobuf.ByteString
      getNextPrivilegesBytes() {
    Object ref = nextPrivileges_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      nextPrivileges_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int BACKGROUND_FIELD_NUMBER = 23;
  private Image background_;
  /**
   * <code>.Image background = 23;</code>
   * @return Whether the background field is set.
   */
  @Override
  public boolean hasBackground() {
    return ((bitField0_ & 0x00000100) != 0);
  }
  /**
   * <code>.Image background = 23;</code>
   * @return The background.
   */
  @Override
  public Image getBackground() {
    return background_ == null ? Image.getDefaultInstance() : background_;
  }
  /**
   * <code>.Image background = 23;</code>
   */
  @Override
  public ImageOrBuilder getBackgroundOrBuilder() {
    return background_ == null ? Image.getDefaultInstance() : background_;
  }

  public static final int BACKGROUNDBACK_FIELD_NUMBER = 24;
  private Image backgroundBack_;
  /**
   * <code>.Image backgroundBack = 24;</code>
   * @return Whether the backgroundBack field is set.
   */
  @Override
  public boolean hasBackgroundBack() {
    return ((bitField0_ & 0x00000200) != 0);
  }
  /**
   * <code>.Image backgroundBack = 24;</code>
   * @return The backgroundBack.
   */
  @Override
  public Image getBackgroundBack() {
    return backgroundBack_ == null ? Image.getDefaultInstance() : backgroundBack_;
  }
  /**
   * <code>.Image backgroundBack = 24;</code>
   */
  @Override
  public ImageOrBuilder getBackgroundBackOrBuilder() {
    return backgroundBack_ == null ? Image.getDefaultInstance() : backgroundBack_;
  }

  public static final int SCORE_FIELD_NUMBER = 25;
  private long score_ = 0L;
  /**
   * <code>int64 score = 25;</code>
   * @return The score.
   */
  @Override
  public long getScore() {
    return score_;
  }

  public static final int BUFFINFO_FIELD_NUMBER = 26;
  private GradeBuffInfo buffInfo_;
  /**
   * <code>.GradeBuffInfo buffInfo = 26;</code>
   * @return Whether the buffInfo field is set.
   */
  @Override
  public boolean hasBuffInfo() {
    return ((bitField0_ & 0x00000400) != 0);
  }
  /**
   * <code>.GradeBuffInfo buffInfo = 26;</code>
   * @return The buffInfo.
   */
  @Override
  public GradeBuffInfo getBuffInfo() {
    return buffInfo_ == null ? GradeBuffInfo.getDefaultInstance() : buffInfo_;
  }
  /**
   * <code>.GradeBuffInfo buffInfo = 26;</code>
   */
  @Override
  public GradeBuffInfoOrBuilder getBuffInfoOrBuilder() {
    return buffInfo_ == null ? GradeBuffInfo.getDefaultInstance() : buffInfo_;
  }

  public static final int GRADEBANNER_FIELD_NUMBER = 1001;
  @SuppressWarnings("serial")
  private volatile Object gradeBanner_ = "";
  /**
   * <code>string gradeBanner = 1001;</code>
   * @return The gradeBanner.
   */
  @Override
  public String getGradeBanner() {
    Object ref = gradeBanner_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      gradeBanner_ = s;
      return s;
    }
  }
  /**
   * <code>string gradeBanner = 1001;</code>
   * @return The bytes for gradeBanner.
   */
  @Override
  public com.google.protobuf.ByteString
      getGradeBannerBytes() {
    Object ref = gradeBanner_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      gradeBanner_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int PROFILEDIALOGBG_FIELD_NUMBER = 1002;
  private Image profileDialogBg_;
  /**
   * <code>.Image profileDialogBg = 1002;</code>
   * @return Whether the profileDialogBg field is set.
   */
  @Override
  public boolean hasProfileDialogBg() {
    return ((bitField0_ & 0x00000800) != 0);
  }
  /**
   * <code>.Image profileDialogBg = 1002;</code>
   * @return The profileDialogBg.
   */
  @Override
  public Image getProfileDialogBg() {
    return profileDialogBg_ == null ? Image.getDefaultInstance() : profileDialogBg_;
  }
  /**
   * <code>.Image profileDialogBg = 1002;</code>
   */
  @Override
  public ImageOrBuilder getProfileDialogBgOrBuilder() {
    return profileDialogBg_ == null ? Image.getDefaultInstance() : profileDialogBg_;
  }

  public static final int PROFILEDIALOGBGBACK_FIELD_NUMBER = 1003;
  private Image profileDialogBgBack_;
  /**
   * <code>.Image profileDialogBgBack = 1003;</code>
   * @return Whether the profileDialogBgBack field is set.
   */
  @Override
  public boolean hasProfileDialogBgBack() {
    return ((bitField0_ & 0x00001000) != 0);
  }
  /**
   * <code>.Image profileDialogBgBack = 1003;</code>
   * @return The profileDialogBgBack.
   */
  @Override
  public Image getProfileDialogBgBack() {
    return profileDialogBgBack_ == null ? Image.getDefaultInstance() : profileDialogBgBack_;
  }
  /**
   * <code>.Image profileDialogBgBack = 1003;</code>
   */
  @Override
  public ImageOrBuilder getProfileDialogBgBackOrBuilder() {
    return profileDialogBgBack_ == null ? Image.getDefaultInstance() : profileDialogBgBack_;
  }

  private byte memoizedIsInitialized = -1;
  @Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    if (totalDiamondCount_ != 0L) {
      output.writeInt64(1, totalDiamondCount_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeMessage(2, getDiamondIcon());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      output.writeMessage(4, getIcon());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextName_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, nextName_);
    }
    if (level_ != 0L) {
      output.writeInt64(6, level_);
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      output.writeMessage(7, getNextIcon());
    }
    if (nextDiamond_ != 0L) {
      output.writeInt64(8, nextDiamond_);
    }
    if (nowDiamond_ != 0L) {
      output.writeInt64(9, nowDiamond_);
    }
    if (thisGradeMinDiamond_ != 0L) {
      output.writeInt64(10, thisGradeMinDiamond_);
    }
    if (thisGradeMaxDiamond_ != 0L) {
      output.writeInt64(11, thisGradeMaxDiamond_);
    }
    if (payDiamondBak_ != 0L) {
      output.writeInt64(12, payDiamondBak_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gradeDescribe_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 13, gradeDescribe_);
    }
    for (int i = 0; i < gradeIconList_.size(); i++) {
      output.writeMessage(14, gradeIconList_.get(i));
    }
    if (screenChatType_ != 0L) {
      output.writeInt64(15, screenChatType_);
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      output.writeMessage(16, getImIcon());
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      output.writeMessage(17, getImIconWithLevel());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      output.writeMessage(18, getLiveIcon());
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      output.writeMessage(19, getNewImIconWithLevel());
    }
    if (((bitField0_ & 0x00000080) != 0)) {
      output.writeMessage(20, getNewLiveIcon());
    }
    if (upgradeNeedConsume_ != 0L) {
      output.writeInt64(21, upgradeNeedConsume_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPrivileges_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 22, nextPrivileges_);
    }
    if (((bitField0_ & 0x00000100) != 0)) {
      output.writeMessage(23, getBackground());
    }
    if (((bitField0_ & 0x00000200) != 0)) {
      output.writeMessage(24, getBackgroundBack());
    }
    if (score_ != 0L) {
      output.writeInt64(25, score_);
    }
    if (((bitField0_ & 0x00000400) != 0)) {
      output.writeMessage(26, getBuffInfo());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gradeBanner_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1001, gradeBanner_);
    }
    if (((bitField0_ & 0x00000800) != 0)) {
      output.writeMessage(1002, getProfileDialogBg());
    }
    if (((bitField0_ & 0x00001000) != 0)) {
      output.writeMessage(1003, getProfileDialogBgBack());
    }
    getUnknownFields().writeTo(output);
  }

  @Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (totalDiamondCount_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(1, totalDiamondCount_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, getDiamondIcon());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, getIcon());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextName_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, nextName_);
    }
    if (level_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(6, level_);
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(7, getNextIcon());
    }
    if (nextDiamond_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(8, nextDiamond_);
    }
    if (nowDiamond_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(9, nowDiamond_);
    }
    if (thisGradeMinDiamond_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(10, thisGradeMinDiamond_);
    }
    if (thisGradeMaxDiamond_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(11, thisGradeMaxDiamond_);
    }
    if (payDiamondBak_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(12, payDiamondBak_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gradeDescribe_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, gradeDescribe_);
    }
    for (int i = 0; i < gradeIconList_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(14, gradeIconList_.get(i));
    }
    if (screenChatType_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(15, screenChatType_);
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(16, getImIcon());
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(17, getImIconWithLevel());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(18, getLiveIcon());
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(19, getNewImIconWithLevel());
    }
    if (((bitField0_ & 0x00000080) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(20, getNewLiveIcon());
    }
    if (upgradeNeedConsume_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(21, upgradeNeedConsume_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPrivileges_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(22, nextPrivileges_);
    }
    if (((bitField0_ & 0x00000100) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(23, getBackground());
    }
    if (((bitField0_ & 0x00000200) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(24, getBackgroundBack());
    }
    if (score_ != 0L) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(25, score_);
    }
    if (((bitField0_ & 0x00000400) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(26, getBuffInfo());
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gradeBanner_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1001, gradeBanner_);
    }
    if (((bitField0_ & 0x00000800) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1002, getProfileDialogBg());
    }
    if (((bitField0_ & 0x00001000) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1003, getProfileDialogBgBack());
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @Override
  public boolean equals(final Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof PayGrade)) {
      return super.equals(obj);
    }
    PayGrade other = (PayGrade) obj;

    if (getTotalDiamondCount()
        != other.getTotalDiamondCount()) return false;
    if (hasDiamondIcon() != other.hasDiamondIcon()) return false;
    if (hasDiamondIcon()) {
      if (!getDiamondIcon()
          .equals(other.getDiamondIcon())) return false;
    }
    if (!getName()
        .equals(other.getName())) return false;
    if (hasIcon() != other.hasIcon()) return false;
    if (hasIcon()) {
      if (!getIcon()
          .equals(other.getIcon())) return false;
    }
    if (!getNextName()
        .equals(other.getNextName())) return false;
    if (getLevel()
        != other.getLevel()) return false;
    if (hasNextIcon() != other.hasNextIcon()) return false;
    if (hasNextIcon()) {
      if (!getNextIcon()
          .equals(other.getNextIcon())) return false;
    }
    if (getNextDiamond()
        != other.getNextDiamond()) return false;
    if (getNowDiamond()
        != other.getNowDiamond()) return false;
    if (getThisGradeMinDiamond()
        != other.getThisGradeMinDiamond()) return false;
    if (getThisGradeMaxDiamond()
        != other.getThisGradeMaxDiamond()) return false;
    if (getPayDiamondBak()
        != other.getPayDiamondBak()) return false;
    if (!getGradeDescribe()
        .equals(other.getGradeDescribe())) return false;
    if (!getGradeIconListList()
        .equals(other.getGradeIconListList())) return false;
    if (getScreenChatType()
        != other.getScreenChatType()) return false;
    if (hasImIcon() != other.hasImIcon()) return false;
    if (hasImIcon()) {
      if (!getImIcon()
          .equals(other.getImIcon())) return false;
    }
    if (hasImIconWithLevel() != other.hasImIconWithLevel()) return false;
    if (hasImIconWithLevel()) {
      if (!getImIconWithLevel()
          .equals(other.getImIconWithLevel())) return false;
    }
    if (hasLiveIcon() != other.hasLiveIcon()) return false;
    if (hasLiveIcon()) {
      if (!getLiveIcon()
          .equals(other.getLiveIcon())) return false;
    }
    if (hasNewImIconWithLevel() != other.hasNewImIconWithLevel()) return false;
    if (hasNewImIconWithLevel()) {
      if (!getNewImIconWithLevel()
          .equals(other.getNewImIconWithLevel())) return false;
    }
    if (hasNewLiveIcon() != other.hasNewLiveIcon()) return false;
    if (hasNewLiveIcon()) {
      if (!getNewLiveIcon()
          .equals(other.getNewLiveIcon())) return false;
    }
    if (getUpgradeNeedConsume()
        != other.getUpgradeNeedConsume()) return false;
    if (!getNextPrivileges()
        .equals(other.getNextPrivileges())) return false;
    if (hasBackground() != other.hasBackground()) return false;
    if (hasBackground()) {
      if (!getBackground()
          .equals(other.getBackground())) return false;
    }
    if (hasBackgroundBack() != other.hasBackgroundBack()) return false;
    if (hasBackgroundBack()) {
      if (!getBackgroundBack()
          .equals(other.getBackgroundBack())) return false;
    }
    if (getScore()
        != other.getScore()) return false;
    if (hasBuffInfo() != other.hasBuffInfo()) return false;
    if (hasBuffInfo()) {
      if (!getBuffInfo()
          .equals(other.getBuffInfo())) return false;
    }
    if (!getGradeBanner()
        .equals(other.getGradeBanner())) return false;
    if (hasProfileDialogBg() != other.hasProfileDialogBg()) return false;
    if (hasProfileDialogBg()) {
      if (!getProfileDialogBg()
          .equals(other.getProfileDialogBg())) return false;
    }
    if (hasProfileDialogBgBack() != other.hasProfileDialogBgBack()) return false;
    if (hasProfileDialogBgBack()) {
      if (!getProfileDialogBgBack()
          .equals(other.getProfileDialogBgBack())) return false;
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + TOTALDIAMONDCOUNT_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getTotalDiamondCount());
    if (hasDiamondIcon()) {
      hash = (37 * hash) + DIAMONDICON_FIELD_NUMBER;
      hash = (53 * hash) + getDiamondIcon().hashCode();
    }
    hash = (37 * hash) + NAME_FIELD_NUMBER;
    hash = (53 * hash) + getName().hashCode();
    if (hasIcon()) {
      hash = (37 * hash) + ICON_FIELD_NUMBER;
      hash = (53 * hash) + getIcon().hashCode();
    }
    hash = (37 * hash) + NEXTNAME_FIELD_NUMBER;
    hash = (53 * hash) + getNextName().hashCode();
    hash = (37 * hash) + LEVEL_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getLevel());
    if (hasNextIcon()) {
      hash = (37 * hash) + NEXTICON_FIELD_NUMBER;
      hash = (53 * hash) + getNextIcon().hashCode();
    }
    hash = (37 * hash) + NEXTDIAMOND_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getNextDiamond());
    hash = (37 * hash) + NOWDIAMOND_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getNowDiamond());
    hash = (37 * hash) + THISGRADEMINDIAMOND_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getThisGradeMinDiamond());
    hash = (37 * hash) + THISGRADEMAXDIAMOND_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getThisGradeMaxDiamond());
    hash = (37 * hash) + PAYDIAMONDBAK_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getPayDiamondBak());
    hash = (37 * hash) + GRADEDESCRIBE_FIELD_NUMBER;
    hash = (53 * hash) + getGradeDescribe().hashCode();
    if (getGradeIconListCount() > 0) {
      hash = (37 * hash) + GRADEICONLIST_FIELD_NUMBER;
      hash = (53 * hash) + getGradeIconListList().hashCode();
    }
    hash = (37 * hash) + SCREENCHATTYPE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getScreenChatType());
    if (hasImIcon()) {
      hash = (37 * hash) + IMICON_FIELD_NUMBER;
      hash = (53 * hash) + getImIcon().hashCode();
    }
    if (hasImIconWithLevel()) {
      hash = (37 * hash) + IMICONWITHLEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getImIconWithLevel().hashCode();
    }
    if (hasLiveIcon()) {
      hash = (37 * hash) + LIVEICON_FIELD_NUMBER;
      hash = (53 * hash) + getLiveIcon().hashCode();
    }
    if (hasNewImIconWithLevel()) {
      hash = (37 * hash) + NEWIMICONWITHLEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getNewImIconWithLevel().hashCode();
    }
    if (hasNewLiveIcon()) {
      hash = (37 * hash) + NEWLIVEICON_FIELD_NUMBER;
      hash = (53 * hash) + getNewLiveIcon().hashCode();
    }
    hash = (37 * hash) + UPGRADENEEDCONSUME_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getUpgradeNeedConsume());
    hash = (37 * hash) + NEXTPRIVILEGES_FIELD_NUMBER;
    hash = (53 * hash) + getNextPrivileges().hashCode();
    if (hasBackground()) {
      hash = (37 * hash) + BACKGROUND_FIELD_NUMBER;
      hash = (53 * hash) + getBackground().hashCode();
    }
    if (hasBackgroundBack()) {
      hash = (37 * hash) + BACKGROUNDBACK_FIELD_NUMBER;
      hash = (53 * hash) + getBackgroundBack().hashCode();
    }
    hash = (37 * hash) + SCORE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
        getScore());
    if (hasBuffInfo()) {
      hash = (37 * hash) + BUFFINFO_FIELD_NUMBER;
      hash = (53 * hash) + getBuffInfo().hashCode();
    }
    hash = (37 * hash) + GRADEBANNER_FIELD_NUMBER;
    hash = (53 * hash) + getGradeBanner().hashCode();
    if (hasProfileDialogBg()) {
      hash = (37 * hash) + PROFILEDIALOGBG_FIELD_NUMBER;
      hash = (53 * hash) + getProfileDialogBg().hashCode();
    }
    if (hasProfileDialogBgBack()) {
      hash = (37 * hash) + PROFILEDIALOGBGBACK_FIELD_NUMBER;
      hash = (53 * hash) + getProfileDialogBgBack().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static PayGrade parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static PayGrade parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static PayGrade parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static PayGrade parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static PayGrade parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static PayGrade parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static PayGrade parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static PayGrade parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public static PayGrade parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static PayGrade parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static PayGrade parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static PayGrade parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(PayGrade prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @Override
  protected Builder newBuilderForType(
      BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code PayGrade}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:PayGrade)
      PayGradeOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Douyin.internal_static_PayGrade_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Douyin.internal_static_PayGrade_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PayGrade.class, Builder.class);
    }

    // Construct using tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.PayGrade.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getDiamondIconFieldBuilder();
        getIconFieldBuilder();
        getNextIconFieldBuilder();
        getGradeIconListFieldBuilder();
        getImIconFieldBuilder();
        getImIconWithLevelFieldBuilder();
        getLiveIconFieldBuilder();
        getNewImIconWithLevelFieldBuilder();
        getNewLiveIconFieldBuilder();
        getBackgroundFieldBuilder();
        getBackgroundBackFieldBuilder();
        getBuffInfoFieldBuilder();
        getProfileDialogBgFieldBuilder();
        getProfileDialogBgBackFieldBuilder();
      }
    }
    @Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      totalDiamondCount_ = 0L;
      diamondIcon_ = null;
      if (diamondIconBuilder_ != null) {
        diamondIconBuilder_.dispose();
        diamondIconBuilder_ = null;
      }
      name_ = "";
      icon_ = null;
      if (iconBuilder_ != null) {
        iconBuilder_.dispose();
        iconBuilder_ = null;
      }
      nextName_ = "";
      level_ = 0L;
      nextIcon_ = null;
      if (nextIconBuilder_ != null) {
        nextIconBuilder_.dispose();
        nextIconBuilder_ = null;
      }
      nextDiamond_ = 0L;
      nowDiamond_ = 0L;
      thisGradeMinDiamond_ = 0L;
      thisGradeMaxDiamond_ = 0L;
      payDiamondBak_ = 0L;
      gradeDescribe_ = "";
      if (gradeIconListBuilder_ == null) {
        gradeIconList_ = java.util.Collections.emptyList();
      } else {
        gradeIconList_ = null;
        gradeIconListBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00002000);
      screenChatType_ = 0L;
      imIcon_ = null;
      if (imIconBuilder_ != null) {
        imIconBuilder_.dispose();
        imIconBuilder_ = null;
      }
      imIconWithLevel_ = null;
      if (imIconWithLevelBuilder_ != null) {
        imIconWithLevelBuilder_.dispose();
        imIconWithLevelBuilder_ = null;
      }
      liveIcon_ = null;
      if (liveIconBuilder_ != null) {
        liveIconBuilder_.dispose();
        liveIconBuilder_ = null;
      }
      newImIconWithLevel_ = null;
      if (newImIconWithLevelBuilder_ != null) {
        newImIconWithLevelBuilder_.dispose();
        newImIconWithLevelBuilder_ = null;
      }
      newLiveIcon_ = null;
      if (newLiveIconBuilder_ != null) {
        newLiveIconBuilder_.dispose();
        newLiveIconBuilder_ = null;
      }
      upgradeNeedConsume_ = 0L;
      nextPrivileges_ = "";
      background_ = null;
      if (backgroundBuilder_ != null) {
        backgroundBuilder_.dispose();
        backgroundBuilder_ = null;
      }
      backgroundBack_ = null;
      if (backgroundBackBuilder_ != null) {
        backgroundBackBuilder_.dispose();
        backgroundBackBuilder_ = null;
      }
      score_ = 0L;
      buffInfo_ = null;
      if (buffInfoBuilder_ != null) {
        buffInfoBuilder_.dispose();
        buffInfoBuilder_ = null;
      }
      gradeBanner_ = "";
      profileDialogBg_ = null;
      if (profileDialogBgBuilder_ != null) {
        profileDialogBgBuilder_.dispose();
        profileDialogBgBuilder_ = null;
      }
      profileDialogBgBack_ = null;
      if (profileDialogBgBackBuilder_ != null) {
        profileDialogBgBackBuilder_.dispose();
        profileDialogBgBackBuilder_ = null;
      }
      return this;
    }

    @Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return Douyin.internal_static_PayGrade_descriptor;
    }

    @Override
    public PayGrade getDefaultInstanceForType() {
      return PayGrade.getDefaultInstance();
    }

    @Override
    public PayGrade build() {
      PayGrade result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @Override
    public PayGrade buildPartial() {
      PayGrade result = new PayGrade(this);
      buildPartialRepeatedFields(result);
      if (bitField0_ != 0) { buildPartial0(result); }
      onBuilt();
      return result;
    }

    private void buildPartialRepeatedFields(PayGrade result) {
      if (gradeIconListBuilder_ == null) {
        if (((bitField0_ & 0x00002000) != 0)) {
          gradeIconList_ = java.util.Collections.unmodifiableList(gradeIconList_);
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.gradeIconList_ = gradeIconList_;
      } else {
        result.gradeIconList_ = gradeIconListBuilder_.build();
      }
    }

    private void buildPartial0(PayGrade result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.totalDiamondCount_ = totalDiamondCount_;
      }
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.diamondIcon_ = diamondIconBuilder_ == null
            ? diamondIcon_
            : diamondIconBuilder_.build();
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.name_ = name_;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.icon_ = iconBuilder_ == null
            ? icon_
            : iconBuilder_.build();
        to_bitField0_ |= 0x00000002;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.nextName_ = nextName_;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.level_ = level_;
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.nextIcon_ = nextIconBuilder_ == null
            ? nextIcon_
            : nextIconBuilder_.build();
        to_bitField0_ |= 0x00000004;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.nextDiamond_ = nextDiamond_;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.nowDiamond_ = nowDiamond_;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.thisGradeMinDiamond_ = thisGradeMinDiamond_;
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.thisGradeMaxDiamond_ = thisGradeMaxDiamond_;
      }
      if (((from_bitField0_ & 0x00000800) != 0)) {
        result.payDiamondBak_ = payDiamondBak_;
      }
      if (((from_bitField0_ & 0x00001000) != 0)) {
        result.gradeDescribe_ = gradeDescribe_;
      }
      if (((from_bitField0_ & 0x00004000) != 0)) {
        result.screenChatType_ = screenChatType_;
      }
      if (((from_bitField0_ & 0x00008000) != 0)) {
        result.imIcon_ = imIconBuilder_ == null
            ? imIcon_
            : imIconBuilder_.build();
        to_bitField0_ |= 0x00000008;
      }
      if (((from_bitField0_ & 0x00010000) != 0)) {
        result.imIconWithLevel_ = imIconWithLevelBuilder_ == null
            ? imIconWithLevel_
            : imIconWithLevelBuilder_.build();
        to_bitField0_ |= 0x00000010;
      }
      if (((from_bitField0_ & 0x00020000) != 0)) {
        result.liveIcon_ = liveIconBuilder_ == null
            ? liveIcon_
            : liveIconBuilder_.build();
        to_bitField0_ |= 0x00000020;
      }
      if (((from_bitField0_ & 0x00040000) != 0)) {
        result.newImIconWithLevel_ = newImIconWithLevelBuilder_ == null
            ? newImIconWithLevel_
            : newImIconWithLevelBuilder_.build();
        to_bitField0_ |= 0x00000040;
      }
      if (((from_bitField0_ & 0x00080000) != 0)) {
        result.newLiveIcon_ = newLiveIconBuilder_ == null
            ? newLiveIcon_
            : newLiveIconBuilder_.build();
        to_bitField0_ |= 0x00000080;
      }
      if (((from_bitField0_ & 0x00100000) != 0)) {
        result.upgradeNeedConsume_ = upgradeNeedConsume_;
      }
      if (((from_bitField0_ & 0x00200000) != 0)) {
        result.nextPrivileges_ = nextPrivileges_;
      }
      if (((from_bitField0_ & 0x00400000) != 0)) {
        result.background_ = backgroundBuilder_ == null
            ? background_
            : backgroundBuilder_.build();
        to_bitField0_ |= 0x00000100;
      }
      if (((from_bitField0_ & 0x00800000) != 0)) {
        result.backgroundBack_ = backgroundBackBuilder_ == null
            ? backgroundBack_
            : backgroundBackBuilder_.build();
        to_bitField0_ |= 0x00000200;
      }
      if (((from_bitField0_ & 0x01000000) != 0)) {
        result.score_ = score_;
      }
      if (((from_bitField0_ & 0x02000000) != 0)) {
        result.buffInfo_ = buffInfoBuilder_ == null
            ? buffInfo_
            : buffInfoBuilder_.build();
        to_bitField0_ |= 0x00000400;
      }
      if (((from_bitField0_ & 0x04000000) != 0)) {
        result.gradeBanner_ = gradeBanner_;
      }
      if (((from_bitField0_ & 0x08000000) != 0)) {
        result.profileDialogBg_ = profileDialogBgBuilder_ == null
            ? profileDialogBg_
            : profileDialogBgBuilder_.build();
        to_bitField0_ |= 0x00000800;
      }
      if (((from_bitField0_ & 0x10000000) != 0)) {
        result.profileDialogBgBack_ = profileDialogBgBackBuilder_ == null
            ? profileDialogBgBack_
            : profileDialogBgBackBuilder_.build();
        to_bitField0_ |= 0x00001000;
      }
      result.bitField0_ |= to_bitField0_;
    }

    @Override
    public Builder clone() {
      return super.clone();
    }
    @Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.setField(field, value);
    }
    @Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.addRepeatedField(field, value);
    }
    @Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof PayGrade) {
        return mergeFrom((PayGrade)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(PayGrade other) {
      if (other == PayGrade.getDefaultInstance()) return this;
      if (other.getTotalDiamondCount() != 0L) {
        setTotalDiamondCount(other.getTotalDiamondCount());
      }
      if (other.hasDiamondIcon()) {
        mergeDiamondIcon(other.getDiamondIcon());
      }
      if (!other.getName().isEmpty()) {
        name_ = other.name_;
        bitField0_ |= 0x00000004;
        onChanged();
      }
      if (other.hasIcon()) {
        mergeIcon(other.getIcon());
      }
      if (!other.getNextName().isEmpty()) {
        nextName_ = other.nextName_;
        bitField0_ |= 0x00000010;
        onChanged();
      }
      if (other.getLevel() != 0L) {
        setLevel(other.getLevel());
      }
      if (other.hasNextIcon()) {
        mergeNextIcon(other.getNextIcon());
      }
      if (other.getNextDiamond() != 0L) {
        setNextDiamond(other.getNextDiamond());
      }
      if (other.getNowDiamond() != 0L) {
        setNowDiamond(other.getNowDiamond());
      }
      if (other.getThisGradeMinDiamond() != 0L) {
        setThisGradeMinDiamond(other.getThisGradeMinDiamond());
      }
      if (other.getThisGradeMaxDiamond() != 0L) {
        setThisGradeMaxDiamond(other.getThisGradeMaxDiamond());
      }
      if (other.getPayDiamondBak() != 0L) {
        setPayDiamondBak(other.getPayDiamondBak());
      }
      if (!other.getGradeDescribe().isEmpty()) {
        gradeDescribe_ = other.gradeDescribe_;
        bitField0_ |= 0x00001000;
        onChanged();
      }
      if (gradeIconListBuilder_ == null) {
        if (!other.gradeIconList_.isEmpty()) {
          if (gradeIconList_.isEmpty()) {
            gradeIconList_ = other.gradeIconList_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureGradeIconListIsMutable();
            gradeIconList_.addAll(other.gradeIconList_);
          }
          onChanged();
        }
      } else {
        if (!other.gradeIconList_.isEmpty()) {
          if (gradeIconListBuilder_.isEmpty()) {
            gradeIconListBuilder_.dispose();
            gradeIconListBuilder_ = null;
            gradeIconList_ = other.gradeIconList_;
            bitField0_ = (bitField0_ & ~0x00002000);
            gradeIconListBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getGradeIconListFieldBuilder() : null;
          } else {
            gradeIconListBuilder_.addAllMessages(other.gradeIconList_);
          }
        }
      }
      if (other.getScreenChatType() != 0L) {
        setScreenChatType(other.getScreenChatType());
      }
      if (other.hasImIcon()) {
        mergeImIcon(other.getImIcon());
      }
      if (other.hasImIconWithLevel()) {
        mergeImIconWithLevel(other.getImIconWithLevel());
      }
      if (other.hasLiveIcon()) {
        mergeLiveIcon(other.getLiveIcon());
      }
      if (other.hasNewImIconWithLevel()) {
        mergeNewImIconWithLevel(other.getNewImIconWithLevel());
      }
      if (other.hasNewLiveIcon()) {
        mergeNewLiveIcon(other.getNewLiveIcon());
      }
      if (other.getUpgradeNeedConsume() != 0L) {
        setUpgradeNeedConsume(other.getUpgradeNeedConsume());
      }
      if (!other.getNextPrivileges().isEmpty()) {
        nextPrivileges_ = other.nextPrivileges_;
        bitField0_ |= 0x00200000;
        onChanged();
      }
      if (other.hasBackground()) {
        mergeBackground(other.getBackground());
      }
      if (other.hasBackgroundBack()) {
        mergeBackgroundBack(other.getBackgroundBack());
      }
      if (other.getScore() != 0L) {
        setScore(other.getScore());
      }
      if (other.hasBuffInfo()) {
        mergeBuffInfo(other.getBuffInfo());
      }
      if (!other.getGradeBanner().isEmpty()) {
        gradeBanner_ = other.gradeBanner_;
        bitField0_ |= 0x04000000;
        onChanged();
      }
      if (other.hasProfileDialogBg()) {
        mergeProfileDialogBg(other.getProfileDialogBg());
      }
      if (other.hasProfileDialogBgBack()) {
        mergeProfileDialogBgBack(other.getProfileDialogBgBack());
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @Override
    public final boolean isInitialized() {
      return true;
    }

    @Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              totalDiamondCount_ = input.readInt64();
              bitField0_ |= 0x00000001;
              break;
            } // case 8
            case 18: {
              input.readMessage(
                  getDiamondIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000002;
              break;
            } // case 18
            case 26: {
              name_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00000004;
              break;
            } // case 26
            case 34: {
              input.readMessage(
                  getIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000008;
              break;
            } // case 34
            case 42: {
              nextName_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00000010;
              break;
            } // case 42
            case 48: {
              level_ = input.readInt64();
              bitField0_ |= 0x00000020;
              break;
            } // case 48
            case 58: {
              input.readMessage(
                  getNextIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000040;
              break;
            } // case 58
            case 64: {
              nextDiamond_ = input.readInt64();
              bitField0_ |= 0x00000080;
              break;
            } // case 64
            case 72: {
              nowDiamond_ = input.readInt64();
              bitField0_ |= 0x00000100;
              break;
            } // case 72
            case 80: {
              thisGradeMinDiamond_ = input.readInt64();
              bitField0_ |= 0x00000200;
              break;
            } // case 80
            case 88: {
              thisGradeMaxDiamond_ = input.readInt64();
              bitField0_ |= 0x00000400;
              break;
            } // case 88
            case 96: {
              payDiamondBak_ = input.readInt64();
              bitField0_ |= 0x00000800;
              break;
            } // case 96
            case 106: {
              gradeDescribe_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00001000;
              break;
            } // case 106
            case 114: {
              GradeIcon m =
                  input.readMessage(
                      GradeIcon.parser(),
                      extensionRegistry);
              if (gradeIconListBuilder_ == null) {
                ensureGradeIconListIsMutable();
                gradeIconList_.add(m);
              } else {
                gradeIconListBuilder_.addMessage(m);
              }
              break;
            } // case 114
            case 120: {
              screenChatType_ = input.readInt64();
              bitField0_ |= 0x00004000;
              break;
            } // case 120
            case 130: {
              input.readMessage(
                  getImIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00008000;
              break;
            } // case 130
            case 138: {
              input.readMessage(
                  getImIconWithLevelFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00010000;
              break;
            } // case 138
            case 146: {
              input.readMessage(
                  getLiveIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00020000;
              break;
            } // case 146
            case 154: {
              input.readMessage(
                  getNewImIconWithLevelFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00040000;
              break;
            } // case 154
            case 162: {
              input.readMessage(
                  getNewLiveIconFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00080000;
              break;
            } // case 162
            case 168: {
              upgradeNeedConsume_ = input.readInt64();
              bitField0_ |= 0x00100000;
              break;
            } // case 168
            case 178: {
              nextPrivileges_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00200000;
              break;
            } // case 178
            case 186: {
              input.readMessage(
                  getBackgroundFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00400000;
              break;
            } // case 186
            case 194: {
              input.readMessage(
                  getBackgroundBackFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00800000;
              break;
            } // case 194
            case 200: {
              score_ = input.readInt64();
              bitField0_ |= 0x01000000;
              break;
            } // case 200
            case 210: {
              input.readMessage(
                  getBuffInfoFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x02000000;
              break;
            } // case 210
            case 8010: {
              gradeBanner_ = input.readStringRequireUtf8();
              bitField0_ |= 0x04000000;
              break;
            } // case 8010
            case 8018: {
              input.readMessage(
                  getProfileDialogBgFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x08000000;
              break;
            } // case 8018
            case 8026: {
              input.readMessage(
                  getProfileDialogBgBackFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x10000000;
              break;
            } // case 8026
            default: {
              if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                done = true; // was an endgroup tag
              }
              break;
            } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }
    private int bitField0_;

    private long totalDiamondCount_ ;
    /**
     * <code>int64 totalDiamondCount = 1;</code>
     * @return The totalDiamondCount.
     */
    @Override
    public long getTotalDiamondCount() {
      return totalDiamondCount_;
    }
    /**
     * <code>int64 totalDiamondCount = 1;</code>
     * @param value The totalDiamondCount to set.
     * @return This builder for chaining.
     */
    public Builder setTotalDiamondCount(long value) {

      totalDiamondCount_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     * <code>int64 totalDiamondCount = 1;</code>
     * @return This builder for chaining.
     */
    public Builder clearTotalDiamondCount() {
      bitField0_ = (bitField0_ & ~0x00000001);
      totalDiamondCount_ = 0L;
      onChanged();
      return this;
    }

    private Image diamondIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> diamondIconBuilder_;
    /**
     * <code>.Image diamondIcon = 2;</code>
     * @return Whether the diamondIcon field is set.
     */
    public boolean hasDiamondIcon() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     * @return The diamondIcon.
     */
    public Image getDiamondIcon() {
      if (diamondIconBuilder_ == null) {
        return diamondIcon_ == null ? Image.getDefaultInstance() : diamondIcon_;
      } else {
        return diamondIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public Builder setDiamondIcon(Image value) {
      if (diamondIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        diamondIcon_ = value;
      } else {
        diamondIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public Builder setDiamondIcon(
        Image.Builder builderForValue) {
      if (diamondIconBuilder_ == null) {
        diamondIcon_ = builderForValue.build();
      } else {
        diamondIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public Builder mergeDiamondIcon(Image value) {
      if (diamondIconBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0) &&
          diamondIcon_ != null &&
          diamondIcon_ != Image.getDefaultInstance()) {
          getDiamondIconBuilder().mergeFrom(value);
        } else {
          diamondIcon_ = value;
        }
      } else {
        diamondIconBuilder_.mergeFrom(value);
      }
      if (diamondIcon_ != null) {
        bitField0_ |= 0x00000002;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public Builder clearDiamondIcon() {
      bitField0_ = (bitField0_ & ~0x00000002);
      diamondIcon_ = null;
      if (diamondIconBuilder_ != null) {
        diamondIconBuilder_.dispose();
        diamondIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public Image.Builder getDiamondIconBuilder() {
      bitField0_ |= 0x00000002;
      onChanged();
      return getDiamondIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    public ImageOrBuilder getDiamondIconOrBuilder() {
      if (diamondIconBuilder_ != null) {
        return diamondIconBuilder_.getMessageOrBuilder();
      } else {
        return diamondIcon_ == null ?
            Image.getDefaultInstance() : diamondIcon_;
      }
    }
    /**
     * <code>.Image diamondIcon = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getDiamondIconFieldBuilder() {
      if (diamondIconBuilder_ == null) {
        diamondIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getDiamondIcon(),
                getParentForChildren(),
                isClean());
        diamondIcon_ = null;
      }
      return diamondIconBuilder_;
    }

    private Object name_ = "";
    /**
     * <code>string name = 3;</code>
     * @return The name.
     */
    public String getName() {
      Object ref = name_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string name = 3;</code>
     * @return The bytes for name.
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string name = 3;</code>
     * @param value The name to set.
     * @return This builder for chaining.
     */
    public Builder setName(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      name_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     * <code>string name = 3;</code>
     * @return This builder for chaining.
     */
    public Builder clearName() {
      name_ = getDefaultInstance().getName();
      bitField0_ = (bitField0_ & ~0x00000004);
      onChanged();
      return this;
    }
    /**
     * <code>string name = 3;</code>
     * @param value The bytes for name to set.
     * @return This builder for chaining.
     */
    public Builder setNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      name_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }

    private Image icon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> iconBuilder_;
    /**
     * <code>.Image icon = 4;</code>
     * @return Whether the icon field is set.
     */
    public boolean hasIcon() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>.Image icon = 4;</code>
     * @return The icon.
     */
    public Image getIcon() {
      if (iconBuilder_ == null) {
        return icon_ == null ? Image.getDefaultInstance() : icon_;
      } else {
        return iconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public Builder setIcon(Image value) {
      if (iconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        icon_ = value;
      } else {
        iconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public Builder setIcon(
        Image.Builder builderForValue) {
      if (iconBuilder_ == null) {
        icon_ = builderForValue.build();
      } else {
        iconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public Builder mergeIcon(Image value) {
      if (iconBuilder_ == null) {
        if (((bitField0_ & 0x00000008) != 0) &&
          icon_ != null &&
          icon_ != Image.getDefaultInstance()) {
          getIconBuilder().mergeFrom(value);
        } else {
          icon_ = value;
        }
      } else {
        iconBuilder_.mergeFrom(value);
      }
      if (icon_ != null) {
        bitField0_ |= 0x00000008;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public Builder clearIcon() {
      bitField0_ = (bitField0_ & ~0x00000008);
      icon_ = null;
      if (iconBuilder_ != null) {
        iconBuilder_.dispose();
        iconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public Image.Builder getIconBuilder() {
      bitField0_ |= 0x00000008;
      onChanged();
      return getIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    public ImageOrBuilder getIconOrBuilder() {
      if (iconBuilder_ != null) {
        return iconBuilder_.getMessageOrBuilder();
      } else {
        return icon_ == null ?
            Image.getDefaultInstance() : icon_;
      }
    }
    /**
     * <code>.Image icon = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getIconFieldBuilder() {
      if (iconBuilder_ == null) {
        iconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getIcon(),
                getParentForChildren(),
                isClean());
        icon_ = null;
      }
      return iconBuilder_;
    }

    private Object nextName_ = "";
    /**
     * <code>string nextName = 5;</code>
     * @return The nextName.
     */
    public String getNextName() {
      Object ref = nextName_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        nextName_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string nextName = 5;</code>
     * @return The bytes for nextName.
     */
    public com.google.protobuf.ByteString
        getNextNameBytes() {
      Object ref = nextName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        nextName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string nextName = 5;</code>
     * @param value The nextName to set.
     * @return This builder for chaining.
     */
    public Builder setNextName(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      nextName_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     * <code>string nextName = 5;</code>
     * @return This builder for chaining.
     */
    public Builder clearNextName() {
      nextName_ = getDefaultInstance().getNextName();
      bitField0_ = (bitField0_ & ~0x00000010);
      onChanged();
      return this;
    }
    /**
     * <code>string nextName = 5;</code>
     * @param value The bytes for nextName to set.
     * @return This builder for chaining.
     */
    public Builder setNextNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      nextName_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }

    private long level_ ;
    /**
     * <code>int64 level = 6;</code>
     * @return The level.
     */
    @Override
    public long getLevel() {
      return level_;
    }
    /**
     * <code>int64 level = 6;</code>
     * @param value The level to set.
     * @return This builder for chaining.
     */
    public Builder setLevel(long value) {

      level_ = value;
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     * <code>int64 level = 6;</code>
     * @return This builder for chaining.
     */
    public Builder clearLevel() {
      bitField0_ = (bitField0_ & ~0x00000020);
      level_ = 0L;
      onChanged();
      return this;
    }

    private Image nextIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> nextIconBuilder_;
    /**
     * <code>.Image nextIcon = 7;</code>
     * @return Whether the nextIcon field is set.
     */
    public boolean hasNextIcon() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     * @return The nextIcon.
     */
    public Image getNextIcon() {
      if (nextIconBuilder_ == null) {
        return nextIcon_ == null ? Image.getDefaultInstance() : nextIcon_;
      } else {
        return nextIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public Builder setNextIcon(Image value) {
      if (nextIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        nextIcon_ = value;
      } else {
        nextIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public Builder setNextIcon(
        Image.Builder builderForValue) {
      if (nextIconBuilder_ == null) {
        nextIcon_ = builderForValue.build();
      } else {
        nextIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public Builder mergeNextIcon(Image value) {
      if (nextIconBuilder_ == null) {
        if (((bitField0_ & 0x00000040) != 0) &&
          nextIcon_ != null &&
          nextIcon_ != Image.getDefaultInstance()) {
          getNextIconBuilder().mergeFrom(value);
        } else {
          nextIcon_ = value;
        }
      } else {
        nextIconBuilder_.mergeFrom(value);
      }
      if (nextIcon_ != null) {
        bitField0_ |= 0x00000040;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public Builder clearNextIcon() {
      bitField0_ = (bitField0_ & ~0x00000040);
      nextIcon_ = null;
      if (nextIconBuilder_ != null) {
        nextIconBuilder_.dispose();
        nextIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public Image.Builder getNextIconBuilder() {
      bitField0_ |= 0x00000040;
      onChanged();
      return getNextIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    public ImageOrBuilder getNextIconOrBuilder() {
      if (nextIconBuilder_ != null) {
        return nextIconBuilder_.getMessageOrBuilder();
      } else {
        return nextIcon_ == null ?
            Image.getDefaultInstance() : nextIcon_;
      }
    }
    /**
     * <code>.Image nextIcon = 7;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getNextIconFieldBuilder() {
      if (nextIconBuilder_ == null) {
        nextIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getNextIcon(),
                getParentForChildren(),
                isClean());
        nextIcon_ = null;
      }
      return nextIconBuilder_;
    }

    private long nextDiamond_ ;
    /**
     * <code>int64 nextDiamond = 8;</code>
     * @return The nextDiamond.
     */
    @Override
    public long getNextDiamond() {
      return nextDiamond_;
    }
    /**
     * <code>int64 nextDiamond = 8;</code>
     * @param value The nextDiamond to set.
     * @return This builder for chaining.
     */
    public Builder setNextDiamond(long value) {

      nextDiamond_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     * <code>int64 nextDiamond = 8;</code>
     * @return This builder for chaining.
     */
    public Builder clearNextDiamond() {
      bitField0_ = (bitField0_ & ~0x00000080);
      nextDiamond_ = 0L;
      onChanged();
      return this;
    }

    private long nowDiamond_ ;
    /**
     * <code>int64 nowDiamond = 9;</code>
     * @return The nowDiamond.
     */
    @Override
    public long getNowDiamond() {
      return nowDiamond_;
    }
    /**
     * <code>int64 nowDiamond = 9;</code>
     * @param value The nowDiamond to set.
     * @return This builder for chaining.
     */
    public Builder setNowDiamond(long value) {

      nowDiamond_ = value;
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     * <code>int64 nowDiamond = 9;</code>
     * @return This builder for chaining.
     */
    public Builder clearNowDiamond() {
      bitField0_ = (bitField0_ & ~0x00000100);
      nowDiamond_ = 0L;
      onChanged();
      return this;
    }

    private long thisGradeMinDiamond_ ;
    /**
     * <code>int64 thisGradeMinDiamond = 10;</code>
     * @return The thisGradeMinDiamond.
     */
    @Override
    public long getThisGradeMinDiamond() {
      return thisGradeMinDiamond_;
    }
    /**
     * <code>int64 thisGradeMinDiamond = 10;</code>
     * @param value The thisGradeMinDiamond to set.
     * @return This builder for chaining.
     */
    public Builder setThisGradeMinDiamond(long value) {

      thisGradeMinDiamond_ = value;
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     * <code>int64 thisGradeMinDiamond = 10;</code>
     * @return This builder for chaining.
     */
    public Builder clearThisGradeMinDiamond() {
      bitField0_ = (bitField0_ & ~0x00000200);
      thisGradeMinDiamond_ = 0L;
      onChanged();
      return this;
    }

    private long thisGradeMaxDiamond_ ;
    /**
     * <code>int64 thisGradeMaxDiamond = 11;</code>
     * @return The thisGradeMaxDiamond.
     */
    @Override
    public long getThisGradeMaxDiamond() {
      return thisGradeMaxDiamond_;
    }
    /**
     * <code>int64 thisGradeMaxDiamond = 11;</code>
     * @param value The thisGradeMaxDiamond to set.
     * @return This builder for chaining.
     */
    public Builder setThisGradeMaxDiamond(long value) {

      thisGradeMaxDiamond_ = value;
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     * <code>int64 thisGradeMaxDiamond = 11;</code>
     * @return This builder for chaining.
     */
    public Builder clearThisGradeMaxDiamond() {
      bitField0_ = (bitField0_ & ~0x00000400);
      thisGradeMaxDiamond_ = 0L;
      onChanged();
      return this;
    }

    private long payDiamondBak_ ;
    /**
     * <code>int64 payDiamondBak = 12;</code>
     * @return The payDiamondBak.
     */
    @Override
    public long getPayDiamondBak() {
      return payDiamondBak_;
    }
    /**
     * <code>int64 payDiamondBak = 12;</code>
     * @param value The payDiamondBak to set.
     * @return This builder for chaining.
     */
    public Builder setPayDiamondBak(long value) {

      payDiamondBak_ = value;
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     * <code>int64 payDiamondBak = 12;</code>
     * @return This builder for chaining.
     */
    public Builder clearPayDiamondBak() {
      bitField0_ = (bitField0_ & ~0x00000800);
      payDiamondBak_ = 0L;
      onChanged();
      return this;
    }

    private Object gradeDescribe_ = "";
    /**
     * <code>string gradeDescribe = 13;</code>
     * @return The gradeDescribe.
     */
    public String getGradeDescribe() {
      Object ref = gradeDescribe_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        gradeDescribe_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string gradeDescribe = 13;</code>
     * @return The bytes for gradeDescribe.
     */
    public com.google.protobuf.ByteString
        getGradeDescribeBytes() {
      Object ref = gradeDescribe_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        gradeDescribe_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string gradeDescribe = 13;</code>
     * @param value The gradeDescribe to set.
     * @return This builder for chaining.
     */
    public Builder setGradeDescribe(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      gradeDescribe_ = value;
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     * <code>string gradeDescribe = 13;</code>
     * @return This builder for chaining.
     */
    public Builder clearGradeDescribe() {
      gradeDescribe_ = getDefaultInstance().getGradeDescribe();
      bitField0_ = (bitField0_ & ~0x00001000);
      onChanged();
      return this;
    }
    /**
     * <code>string gradeDescribe = 13;</code>
     * @param value The bytes for gradeDescribe to set.
     * @return This builder for chaining.
     */
    public Builder setGradeDescribeBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      gradeDescribe_ = value;
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }

    private java.util.List<GradeIcon> gradeIconList_ =
      java.util.Collections.emptyList();
    private void ensureGradeIconListIsMutable() {
      if (!((bitField0_ & 0x00002000) != 0)) {
        gradeIconList_ = new java.util.ArrayList<GradeIcon>(gradeIconList_);
        bitField0_ |= 0x00002000;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        GradeIcon, GradeIcon.Builder, GradeIconOrBuilder> gradeIconListBuilder_;

    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public java.util.List<GradeIcon> getGradeIconListList() {
      if (gradeIconListBuilder_ == null) {
        return java.util.Collections.unmodifiableList(gradeIconList_);
      } else {
        return gradeIconListBuilder_.getMessageList();
      }
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public int getGradeIconListCount() {
      if (gradeIconListBuilder_ == null) {
        return gradeIconList_.size();
      } else {
        return gradeIconListBuilder_.getCount();
      }
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public GradeIcon getGradeIconList(int index) {
      if (gradeIconListBuilder_ == null) {
        return gradeIconList_.get(index);
      } else {
        return gradeIconListBuilder_.getMessage(index);
      }
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder setGradeIconList(
        int index, GradeIcon value) {
      if (gradeIconListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGradeIconListIsMutable();
        gradeIconList_.set(index, value);
        onChanged();
      } else {
        gradeIconListBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder setGradeIconList(
        int index, GradeIcon.Builder builderForValue) {
      if (gradeIconListBuilder_ == null) {
        ensureGradeIconListIsMutable();
        gradeIconList_.set(index, builderForValue.build());
        onChanged();
      } else {
        gradeIconListBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder addGradeIconList(GradeIcon value) {
      if (gradeIconListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGradeIconListIsMutable();
        gradeIconList_.add(value);
        onChanged();
      } else {
        gradeIconListBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder addGradeIconList(
        int index, GradeIcon value) {
      if (gradeIconListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGradeIconListIsMutable();
        gradeIconList_.add(index, value);
        onChanged();
      } else {
        gradeIconListBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder addGradeIconList(
        GradeIcon.Builder builderForValue) {
      if (gradeIconListBuilder_ == null) {
        ensureGradeIconListIsMutable();
        gradeIconList_.add(builderForValue.build());
        onChanged();
      } else {
        gradeIconListBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder addGradeIconList(
        int index, GradeIcon.Builder builderForValue) {
      if (gradeIconListBuilder_ == null) {
        ensureGradeIconListIsMutable();
        gradeIconList_.add(index, builderForValue.build());
        onChanged();
      } else {
        gradeIconListBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder addAllGradeIconList(
        Iterable<? extends GradeIcon> values) {
      if (gradeIconListBuilder_ == null) {
        ensureGradeIconListIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, gradeIconList_);
        onChanged();
      } else {
        gradeIconListBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder clearGradeIconList() {
      if (gradeIconListBuilder_ == null) {
        gradeIconList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
      } else {
        gradeIconListBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public Builder removeGradeIconList(int index) {
      if (gradeIconListBuilder_ == null) {
        ensureGradeIconListIsMutable();
        gradeIconList_.remove(index);
        onChanged();
      } else {
        gradeIconListBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public GradeIcon.Builder getGradeIconListBuilder(
        int index) {
      return getGradeIconListFieldBuilder().getBuilder(index);
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public GradeIconOrBuilder getGradeIconListOrBuilder(
        int index) {
      if (gradeIconListBuilder_ == null) {
        return gradeIconList_.get(index);  } else {
        return gradeIconListBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public java.util.List<? extends GradeIconOrBuilder>
         getGradeIconListOrBuilderList() {
      if (gradeIconListBuilder_ != null) {
        return gradeIconListBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(gradeIconList_);
      }
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public GradeIcon.Builder addGradeIconListBuilder() {
      return getGradeIconListFieldBuilder().addBuilder(
          GradeIcon.getDefaultInstance());
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public GradeIcon.Builder addGradeIconListBuilder(
        int index) {
      return getGradeIconListFieldBuilder().addBuilder(
          index, GradeIcon.getDefaultInstance());
    }
    /**
     * <code>repeated .GradeIcon gradeIconList = 14;</code>
     */
    public java.util.List<GradeIcon.Builder>
         getGradeIconListBuilderList() {
      return getGradeIconListFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        GradeIcon, GradeIcon.Builder, GradeIconOrBuilder>
        getGradeIconListFieldBuilder() {
      if (gradeIconListBuilder_ == null) {
        gradeIconListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            GradeIcon, GradeIcon.Builder, GradeIconOrBuilder>(
                gradeIconList_,
                ((bitField0_ & 0x00002000) != 0),
                getParentForChildren(),
                isClean());
        gradeIconList_ = null;
      }
      return gradeIconListBuilder_;
    }

    private long screenChatType_ ;
    /**
     * <code>int64 screenChatType = 15;</code>
     * @return The screenChatType.
     */
    @Override
    public long getScreenChatType() {
      return screenChatType_;
    }
    /**
     * <code>int64 screenChatType = 15;</code>
     * @param value The screenChatType to set.
     * @return This builder for chaining.
     */
    public Builder setScreenChatType(long value) {

      screenChatType_ = value;
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     * <code>int64 screenChatType = 15;</code>
     * @return This builder for chaining.
     */
    public Builder clearScreenChatType() {
      bitField0_ = (bitField0_ & ~0x00004000);
      screenChatType_ = 0L;
      onChanged();
      return this;
    }

    private Image imIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> imIconBuilder_;
    /**
     * <code>.Image imIcon = 16;</code>
     * @return Whether the imIcon field is set.
     */
    public boolean hasImIcon() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>.Image imIcon = 16;</code>
     * @return The imIcon.
     */
    public Image getImIcon() {
      if (imIconBuilder_ == null) {
        return imIcon_ == null ? Image.getDefaultInstance() : imIcon_;
      } else {
        return imIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public Builder setImIcon(Image value) {
      if (imIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        imIcon_ = value;
      } else {
        imIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00008000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public Builder setImIcon(
        Image.Builder builderForValue) {
      if (imIconBuilder_ == null) {
        imIcon_ = builderForValue.build();
      } else {
        imIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00008000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public Builder mergeImIcon(Image value) {
      if (imIconBuilder_ == null) {
        if (((bitField0_ & 0x00008000) != 0) &&
          imIcon_ != null &&
          imIcon_ != Image.getDefaultInstance()) {
          getImIconBuilder().mergeFrom(value);
        } else {
          imIcon_ = value;
        }
      } else {
        imIconBuilder_.mergeFrom(value);
      }
      if (imIcon_ != null) {
        bitField0_ |= 0x00008000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public Builder clearImIcon() {
      bitField0_ = (bitField0_ & ~0x00008000);
      imIcon_ = null;
      if (imIconBuilder_ != null) {
        imIconBuilder_.dispose();
        imIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public Image.Builder getImIconBuilder() {
      bitField0_ |= 0x00008000;
      onChanged();
      return getImIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    public ImageOrBuilder getImIconOrBuilder() {
      if (imIconBuilder_ != null) {
        return imIconBuilder_.getMessageOrBuilder();
      } else {
        return imIcon_ == null ?
            Image.getDefaultInstance() : imIcon_;
      }
    }
    /**
     * <code>.Image imIcon = 16;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getImIconFieldBuilder() {
      if (imIconBuilder_ == null) {
        imIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getImIcon(),
                getParentForChildren(),
                isClean());
        imIcon_ = null;
      }
      return imIconBuilder_;
    }

    private Image imIconWithLevel_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> imIconWithLevelBuilder_;
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     * @return Whether the imIconWithLevel field is set.
     */
    public boolean hasImIconWithLevel() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     * @return The imIconWithLevel.
     */
    public Image getImIconWithLevel() {
      if (imIconWithLevelBuilder_ == null) {
        return imIconWithLevel_ == null ? Image.getDefaultInstance() : imIconWithLevel_;
      } else {
        return imIconWithLevelBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public Builder setImIconWithLevel(Image value) {
      if (imIconWithLevelBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        imIconWithLevel_ = value;
      } else {
        imIconWithLevelBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00010000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public Builder setImIconWithLevel(
        Image.Builder builderForValue) {
      if (imIconWithLevelBuilder_ == null) {
        imIconWithLevel_ = builderForValue.build();
      } else {
        imIconWithLevelBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00010000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public Builder mergeImIconWithLevel(Image value) {
      if (imIconWithLevelBuilder_ == null) {
        if (((bitField0_ & 0x00010000) != 0) &&
          imIconWithLevel_ != null &&
          imIconWithLevel_ != Image.getDefaultInstance()) {
          getImIconWithLevelBuilder().mergeFrom(value);
        } else {
          imIconWithLevel_ = value;
        }
      } else {
        imIconWithLevelBuilder_.mergeFrom(value);
      }
      if (imIconWithLevel_ != null) {
        bitField0_ |= 0x00010000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public Builder clearImIconWithLevel() {
      bitField0_ = (bitField0_ & ~0x00010000);
      imIconWithLevel_ = null;
      if (imIconWithLevelBuilder_ != null) {
        imIconWithLevelBuilder_.dispose();
        imIconWithLevelBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public Image.Builder getImIconWithLevelBuilder() {
      bitField0_ |= 0x00010000;
      onChanged();
      return getImIconWithLevelFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    public ImageOrBuilder getImIconWithLevelOrBuilder() {
      if (imIconWithLevelBuilder_ != null) {
        return imIconWithLevelBuilder_.getMessageOrBuilder();
      } else {
        return imIconWithLevel_ == null ?
            Image.getDefaultInstance() : imIconWithLevel_;
      }
    }
    /**
     * <code>.Image imIconWithLevel = 17;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getImIconWithLevelFieldBuilder() {
      if (imIconWithLevelBuilder_ == null) {
        imIconWithLevelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getImIconWithLevel(),
                getParentForChildren(),
                isClean());
        imIconWithLevel_ = null;
      }
      return imIconWithLevelBuilder_;
    }

    private Image liveIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> liveIconBuilder_;
    /**
     * <code>.Image liveIcon = 18;</code>
     * @return Whether the liveIcon field is set.
     */
    public boolean hasLiveIcon() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     * @return The liveIcon.
     */
    public Image getLiveIcon() {
      if (liveIconBuilder_ == null) {
        return liveIcon_ == null ? Image.getDefaultInstance() : liveIcon_;
      } else {
        return liveIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public Builder setLiveIcon(Image value) {
      if (liveIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        liveIcon_ = value;
      } else {
        liveIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00020000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public Builder setLiveIcon(
        Image.Builder builderForValue) {
      if (liveIconBuilder_ == null) {
        liveIcon_ = builderForValue.build();
      } else {
        liveIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00020000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public Builder mergeLiveIcon(Image value) {
      if (liveIconBuilder_ == null) {
        if (((bitField0_ & 0x00020000) != 0) &&
          liveIcon_ != null &&
          liveIcon_ != Image.getDefaultInstance()) {
          getLiveIconBuilder().mergeFrom(value);
        } else {
          liveIcon_ = value;
        }
      } else {
        liveIconBuilder_.mergeFrom(value);
      }
      if (liveIcon_ != null) {
        bitField0_ |= 0x00020000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public Builder clearLiveIcon() {
      bitField0_ = (bitField0_ & ~0x00020000);
      liveIcon_ = null;
      if (liveIconBuilder_ != null) {
        liveIconBuilder_.dispose();
        liveIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public Image.Builder getLiveIconBuilder() {
      bitField0_ |= 0x00020000;
      onChanged();
      return getLiveIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    public ImageOrBuilder getLiveIconOrBuilder() {
      if (liveIconBuilder_ != null) {
        return liveIconBuilder_.getMessageOrBuilder();
      } else {
        return liveIcon_ == null ?
            Image.getDefaultInstance() : liveIcon_;
      }
    }
    /**
     * <code>.Image liveIcon = 18;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getLiveIconFieldBuilder() {
      if (liveIconBuilder_ == null) {
        liveIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getLiveIcon(),
                getParentForChildren(),
                isClean());
        liveIcon_ = null;
      }
      return liveIconBuilder_;
    }

    private Image newImIconWithLevel_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> newImIconWithLevelBuilder_;
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     * @return Whether the newImIconWithLevel field is set.
     */
    public boolean hasNewImIconWithLevel() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     * @return The newImIconWithLevel.
     */
    public Image getNewImIconWithLevel() {
      if (newImIconWithLevelBuilder_ == null) {
        return newImIconWithLevel_ == null ? Image.getDefaultInstance() : newImIconWithLevel_;
      } else {
        return newImIconWithLevelBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public Builder setNewImIconWithLevel(Image value) {
      if (newImIconWithLevelBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        newImIconWithLevel_ = value;
      } else {
        newImIconWithLevelBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00040000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public Builder setNewImIconWithLevel(
        Image.Builder builderForValue) {
      if (newImIconWithLevelBuilder_ == null) {
        newImIconWithLevel_ = builderForValue.build();
      } else {
        newImIconWithLevelBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00040000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public Builder mergeNewImIconWithLevel(Image value) {
      if (newImIconWithLevelBuilder_ == null) {
        if (((bitField0_ & 0x00040000) != 0) &&
          newImIconWithLevel_ != null &&
          newImIconWithLevel_ != Image.getDefaultInstance()) {
          getNewImIconWithLevelBuilder().mergeFrom(value);
        } else {
          newImIconWithLevel_ = value;
        }
      } else {
        newImIconWithLevelBuilder_.mergeFrom(value);
      }
      if (newImIconWithLevel_ != null) {
        bitField0_ |= 0x00040000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public Builder clearNewImIconWithLevel() {
      bitField0_ = (bitField0_ & ~0x00040000);
      newImIconWithLevel_ = null;
      if (newImIconWithLevelBuilder_ != null) {
        newImIconWithLevelBuilder_.dispose();
        newImIconWithLevelBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public Image.Builder getNewImIconWithLevelBuilder() {
      bitField0_ |= 0x00040000;
      onChanged();
      return getNewImIconWithLevelFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    public ImageOrBuilder getNewImIconWithLevelOrBuilder() {
      if (newImIconWithLevelBuilder_ != null) {
        return newImIconWithLevelBuilder_.getMessageOrBuilder();
      } else {
        return newImIconWithLevel_ == null ?
            Image.getDefaultInstance() : newImIconWithLevel_;
      }
    }
    /**
     * <code>.Image newImIconWithLevel = 19;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getNewImIconWithLevelFieldBuilder() {
      if (newImIconWithLevelBuilder_ == null) {
        newImIconWithLevelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getNewImIconWithLevel(),
                getParentForChildren(),
                isClean());
        newImIconWithLevel_ = null;
      }
      return newImIconWithLevelBuilder_;
    }

    private Image newLiveIcon_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> newLiveIconBuilder_;
    /**
     * <code>.Image newLiveIcon = 20;</code>
     * @return Whether the newLiveIcon field is set.
     */
    public boolean hasNewLiveIcon() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     * @return The newLiveIcon.
     */
    public Image getNewLiveIcon() {
      if (newLiveIconBuilder_ == null) {
        return newLiveIcon_ == null ? Image.getDefaultInstance() : newLiveIcon_;
      } else {
        return newLiveIconBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public Builder setNewLiveIcon(Image value) {
      if (newLiveIconBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        newLiveIcon_ = value;
      } else {
        newLiveIconBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00080000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public Builder setNewLiveIcon(
        Image.Builder builderForValue) {
      if (newLiveIconBuilder_ == null) {
        newLiveIcon_ = builderForValue.build();
      } else {
        newLiveIconBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00080000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public Builder mergeNewLiveIcon(Image value) {
      if (newLiveIconBuilder_ == null) {
        if (((bitField0_ & 0x00080000) != 0) &&
          newLiveIcon_ != null &&
          newLiveIcon_ != Image.getDefaultInstance()) {
          getNewLiveIconBuilder().mergeFrom(value);
        } else {
          newLiveIcon_ = value;
        }
      } else {
        newLiveIconBuilder_.mergeFrom(value);
      }
      if (newLiveIcon_ != null) {
        bitField0_ |= 0x00080000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public Builder clearNewLiveIcon() {
      bitField0_ = (bitField0_ & ~0x00080000);
      newLiveIcon_ = null;
      if (newLiveIconBuilder_ != null) {
        newLiveIconBuilder_.dispose();
        newLiveIconBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public Image.Builder getNewLiveIconBuilder() {
      bitField0_ |= 0x00080000;
      onChanged();
      return getNewLiveIconFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    public ImageOrBuilder getNewLiveIconOrBuilder() {
      if (newLiveIconBuilder_ != null) {
        return newLiveIconBuilder_.getMessageOrBuilder();
      } else {
        return newLiveIcon_ == null ?
            Image.getDefaultInstance() : newLiveIcon_;
      }
    }
    /**
     * <code>.Image newLiveIcon = 20;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getNewLiveIconFieldBuilder() {
      if (newLiveIconBuilder_ == null) {
        newLiveIconBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getNewLiveIcon(),
                getParentForChildren(),
                isClean());
        newLiveIcon_ = null;
      }
      return newLiveIconBuilder_;
    }

    private long upgradeNeedConsume_ ;
    /**
     * <code>int64 upgradeNeedConsume = 21;</code>
     * @return The upgradeNeedConsume.
     */
    @Override
    public long getUpgradeNeedConsume() {
      return upgradeNeedConsume_;
    }
    /**
     * <code>int64 upgradeNeedConsume = 21;</code>
     * @param value The upgradeNeedConsume to set.
     * @return This builder for chaining.
     */
    public Builder setUpgradeNeedConsume(long value) {

      upgradeNeedConsume_ = value;
      bitField0_ |= 0x00100000;
      onChanged();
      return this;
    }
    /**
     * <code>int64 upgradeNeedConsume = 21;</code>
     * @return This builder for chaining.
     */
    public Builder clearUpgradeNeedConsume() {
      bitField0_ = (bitField0_ & ~0x00100000);
      upgradeNeedConsume_ = 0L;
      onChanged();
      return this;
    }

    private Object nextPrivileges_ = "";
    /**
     * <code>string nextPrivileges = 22;</code>
     * @return The nextPrivileges.
     */
    public String getNextPrivileges() {
      Object ref = nextPrivileges_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        nextPrivileges_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string nextPrivileges = 22;</code>
     * @return The bytes for nextPrivileges.
     */
    public com.google.protobuf.ByteString
        getNextPrivilegesBytes() {
      Object ref = nextPrivileges_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        nextPrivileges_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string nextPrivileges = 22;</code>
     * @param value The nextPrivileges to set.
     * @return This builder for chaining.
     */
    public Builder setNextPrivileges(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      nextPrivileges_ = value;
      bitField0_ |= 0x00200000;
      onChanged();
      return this;
    }
    /**
     * <code>string nextPrivileges = 22;</code>
     * @return This builder for chaining.
     */
    public Builder clearNextPrivileges() {
      nextPrivileges_ = getDefaultInstance().getNextPrivileges();
      bitField0_ = (bitField0_ & ~0x00200000);
      onChanged();
      return this;
    }
    /**
     * <code>string nextPrivileges = 22;</code>
     * @param value The bytes for nextPrivileges to set.
     * @return This builder for chaining.
     */
    public Builder setNextPrivilegesBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      nextPrivileges_ = value;
      bitField0_ |= 0x00200000;
      onChanged();
      return this;
    }

    private Image background_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> backgroundBuilder_;
    /**
     * <code>.Image background = 23;</code>
     * @return Whether the background field is set.
     */
    public boolean hasBackground() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <code>.Image background = 23;</code>
     * @return The background.
     */
    public Image getBackground() {
      if (backgroundBuilder_ == null) {
        return background_ == null ? Image.getDefaultInstance() : background_;
      } else {
        return backgroundBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public Builder setBackground(Image value) {
      if (backgroundBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        background_ = value;
      } else {
        backgroundBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00400000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public Builder setBackground(
        Image.Builder builderForValue) {
      if (backgroundBuilder_ == null) {
        background_ = builderForValue.build();
      } else {
        backgroundBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00400000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public Builder mergeBackground(Image value) {
      if (backgroundBuilder_ == null) {
        if (((bitField0_ & 0x00400000) != 0) &&
          background_ != null &&
          background_ != Image.getDefaultInstance()) {
          getBackgroundBuilder().mergeFrom(value);
        } else {
          background_ = value;
        }
      } else {
        backgroundBuilder_.mergeFrom(value);
      }
      if (background_ != null) {
        bitField0_ |= 0x00400000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public Builder clearBackground() {
      bitField0_ = (bitField0_ & ~0x00400000);
      background_ = null;
      if (backgroundBuilder_ != null) {
        backgroundBuilder_.dispose();
        backgroundBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public Image.Builder getBackgroundBuilder() {
      bitField0_ |= 0x00400000;
      onChanged();
      return getBackgroundFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image background = 23;</code>
     */
    public ImageOrBuilder getBackgroundOrBuilder() {
      if (backgroundBuilder_ != null) {
        return backgroundBuilder_.getMessageOrBuilder();
      } else {
        return background_ == null ?
            Image.getDefaultInstance() : background_;
      }
    }
    /**
     * <code>.Image background = 23;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getBackgroundFieldBuilder() {
      if (backgroundBuilder_ == null) {
        backgroundBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getBackground(),
                getParentForChildren(),
                isClean());
        background_ = null;
      }
      return backgroundBuilder_;
    }

    private Image backgroundBack_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> backgroundBackBuilder_;
    /**
     * <code>.Image backgroundBack = 24;</code>
     * @return Whether the backgroundBack field is set.
     */
    public boolean hasBackgroundBack() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     * @return The backgroundBack.
     */
    public Image getBackgroundBack() {
      if (backgroundBackBuilder_ == null) {
        return backgroundBack_ == null ? Image.getDefaultInstance() : backgroundBack_;
      } else {
        return backgroundBackBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public Builder setBackgroundBack(Image value) {
      if (backgroundBackBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        backgroundBack_ = value;
      } else {
        backgroundBackBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00800000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public Builder setBackgroundBack(
        Image.Builder builderForValue) {
      if (backgroundBackBuilder_ == null) {
        backgroundBack_ = builderForValue.build();
      } else {
        backgroundBackBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00800000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public Builder mergeBackgroundBack(Image value) {
      if (backgroundBackBuilder_ == null) {
        if (((bitField0_ & 0x00800000) != 0) &&
          backgroundBack_ != null &&
          backgroundBack_ != Image.getDefaultInstance()) {
          getBackgroundBackBuilder().mergeFrom(value);
        } else {
          backgroundBack_ = value;
        }
      } else {
        backgroundBackBuilder_.mergeFrom(value);
      }
      if (backgroundBack_ != null) {
        bitField0_ |= 0x00800000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public Builder clearBackgroundBack() {
      bitField0_ = (bitField0_ & ~0x00800000);
      backgroundBack_ = null;
      if (backgroundBackBuilder_ != null) {
        backgroundBackBuilder_.dispose();
        backgroundBackBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public Image.Builder getBackgroundBackBuilder() {
      bitField0_ |= 0x00800000;
      onChanged();
      return getBackgroundBackFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    public ImageOrBuilder getBackgroundBackOrBuilder() {
      if (backgroundBackBuilder_ != null) {
        return backgroundBackBuilder_.getMessageOrBuilder();
      } else {
        return backgroundBack_ == null ?
            Image.getDefaultInstance() : backgroundBack_;
      }
    }
    /**
     * <code>.Image backgroundBack = 24;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getBackgroundBackFieldBuilder() {
      if (backgroundBackBuilder_ == null) {
        backgroundBackBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getBackgroundBack(),
                getParentForChildren(),
                isClean());
        backgroundBack_ = null;
      }
      return backgroundBackBuilder_;
    }

    private long score_ ;
    /**
     * <code>int64 score = 25;</code>
     * @return The score.
     */
    @Override
    public long getScore() {
      return score_;
    }
    /**
     * <code>int64 score = 25;</code>
     * @param value The score to set.
     * @return This builder for chaining.
     */
    public Builder setScore(long value) {

      score_ = value;
      bitField0_ |= 0x01000000;
      onChanged();
      return this;
    }
    /**
     * <code>int64 score = 25;</code>
     * @return This builder for chaining.
     */
    public Builder clearScore() {
      bitField0_ = (bitField0_ & ~0x01000000);
      score_ = 0L;
      onChanged();
      return this;
    }

    private GradeBuffInfo buffInfo_;
    private com.google.protobuf.SingleFieldBuilderV3<
        GradeBuffInfo, GradeBuffInfo.Builder, GradeBuffInfoOrBuilder> buffInfoBuilder_;
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     * @return Whether the buffInfo field is set.
     */
    public boolean hasBuffInfo() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     * @return The buffInfo.
     */
    public GradeBuffInfo getBuffInfo() {
      if (buffInfoBuilder_ == null) {
        return buffInfo_ == null ? GradeBuffInfo.getDefaultInstance() : buffInfo_;
      } else {
        return buffInfoBuilder_.getMessage();
      }
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public Builder setBuffInfo(GradeBuffInfo value) {
      if (buffInfoBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        buffInfo_ = value;
      } else {
        buffInfoBuilder_.setMessage(value);
      }
      bitField0_ |= 0x02000000;
      onChanged();
      return this;
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public Builder setBuffInfo(
        GradeBuffInfo.Builder builderForValue) {
      if (buffInfoBuilder_ == null) {
        buffInfo_ = builderForValue.build();
      } else {
        buffInfoBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x02000000;
      onChanged();
      return this;
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public Builder mergeBuffInfo(GradeBuffInfo value) {
      if (buffInfoBuilder_ == null) {
        if (((bitField0_ & 0x02000000) != 0) &&
          buffInfo_ != null &&
          buffInfo_ != GradeBuffInfo.getDefaultInstance()) {
          getBuffInfoBuilder().mergeFrom(value);
        } else {
          buffInfo_ = value;
        }
      } else {
        buffInfoBuilder_.mergeFrom(value);
      }
      if (buffInfo_ != null) {
        bitField0_ |= 0x02000000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public Builder clearBuffInfo() {
      bitField0_ = (bitField0_ & ~0x02000000);
      buffInfo_ = null;
      if (buffInfoBuilder_ != null) {
        buffInfoBuilder_.dispose();
        buffInfoBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public GradeBuffInfo.Builder getBuffInfoBuilder() {
      bitField0_ |= 0x02000000;
      onChanged();
      return getBuffInfoFieldBuilder().getBuilder();
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    public GradeBuffInfoOrBuilder getBuffInfoOrBuilder() {
      if (buffInfoBuilder_ != null) {
        return buffInfoBuilder_.getMessageOrBuilder();
      } else {
        return buffInfo_ == null ?
            GradeBuffInfo.getDefaultInstance() : buffInfo_;
      }
    }
    /**
     * <code>.GradeBuffInfo buffInfo = 26;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        GradeBuffInfo, GradeBuffInfo.Builder, GradeBuffInfoOrBuilder>
        getBuffInfoFieldBuilder() {
      if (buffInfoBuilder_ == null) {
        buffInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            GradeBuffInfo, GradeBuffInfo.Builder, GradeBuffInfoOrBuilder>(
                getBuffInfo(),
                getParentForChildren(),
                isClean());
        buffInfo_ = null;
      }
      return buffInfoBuilder_;
    }

    private Object gradeBanner_ = "";
    /**
     * <code>string gradeBanner = 1001;</code>
     * @return The gradeBanner.
     */
    public String getGradeBanner() {
      Object ref = gradeBanner_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        gradeBanner_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string gradeBanner = 1001;</code>
     * @return The bytes for gradeBanner.
     */
    public com.google.protobuf.ByteString
        getGradeBannerBytes() {
      Object ref = gradeBanner_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        gradeBanner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string gradeBanner = 1001;</code>
     * @param value The gradeBanner to set.
     * @return This builder for chaining.
     */
    public Builder setGradeBanner(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      gradeBanner_ = value;
      bitField0_ |= 0x04000000;
      onChanged();
      return this;
    }
    /**
     * <code>string gradeBanner = 1001;</code>
     * @return This builder for chaining.
     */
    public Builder clearGradeBanner() {
      gradeBanner_ = getDefaultInstance().getGradeBanner();
      bitField0_ = (bitField0_ & ~0x04000000);
      onChanged();
      return this;
    }
    /**
     * <code>string gradeBanner = 1001;</code>
     * @param value The bytes for gradeBanner to set.
     * @return This builder for chaining.
     */
    public Builder setGradeBannerBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      gradeBanner_ = value;
      bitField0_ |= 0x04000000;
      onChanged();
      return this;
    }

    private Image profileDialogBg_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> profileDialogBgBuilder_;
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     * @return Whether the profileDialogBg field is set.
     */
    public boolean hasProfileDialogBg() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     * @return The profileDialogBg.
     */
    public Image getProfileDialogBg() {
      if (profileDialogBgBuilder_ == null) {
        return profileDialogBg_ == null ? Image.getDefaultInstance() : profileDialogBg_;
      } else {
        return profileDialogBgBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public Builder setProfileDialogBg(Image value) {
      if (profileDialogBgBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        profileDialogBg_ = value;
      } else {
        profileDialogBgBuilder_.setMessage(value);
      }
      bitField0_ |= 0x08000000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public Builder setProfileDialogBg(
        Image.Builder builderForValue) {
      if (profileDialogBgBuilder_ == null) {
        profileDialogBg_ = builderForValue.build();
      } else {
        profileDialogBgBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x08000000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public Builder mergeProfileDialogBg(Image value) {
      if (profileDialogBgBuilder_ == null) {
        if (((bitField0_ & 0x08000000) != 0) &&
          profileDialogBg_ != null &&
          profileDialogBg_ != Image.getDefaultInstance()) {
          getProfileDialogBgBuilder().mergeFrom(value);
        } else {
          profileDialogBg_ = value;
        }
      } else {
        profileDialogBgBuilder_.mergeFrom(value);
      }
      if (profileDialogBg_ != null) {
        bitField0_ |= 0x08000000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public Builder clearProfileDialogBg() {
      bitField0_ = (bitField0_ & ~0x08000000);
      profileDialogBg_ = null;
      if (profileDialogBgBuilder_ != null) {
        profileDialogBgBuilder_.dispose();
        profileDialogBgBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public Image.Builder getProfileDialogBgBuilder() {
      bitField0_ |= 0x08000000;
      onChanged();
      return getProfileDialogBgFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    public ImageOrBuilder getProfileDialogBgOrBuilder() {
      if (profileDialogBgBuilder_ != null) {
        return profileDialogBgBuilder_.getMessageOrBuilder();
      } else {
        return profileDialogBg_ == null ?
            Image.getDefaultInstance() : profileDialogBg_;
      }
    }
    /**
     * <code>.Image profileDialogBg = 1002;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getProfileDialogBgFieldBuilder() {
      if (profileDialogBgBuilder_ == null) {
        profileDialogBgBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getProfileDialogBg(),
                getParentForChildren(),
                isClean());
        profileDialogBg_ = null;
      }
      return profileDialogBgBuilder_;
    }

    private Image profileDialogBgBack_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> profileDialogBgBackBuilder_;
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     * @return Whether the profileDialogBgBack field is set.
     */
    public boolean hasProfileDialogBgBack() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     * @return The profileDialogBgBack.
     */
    public Image getProfileDialogBgBack() {
      if (profileDialogBgBackBuilder_ == null) {
        return profileDialogBgBack_ == null ? Image.getDefaultInstance() : profileDialogBgBack_;
      } else {
        return profileDialogBgBackBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public Builder setProfileDialogBgBack(Image value) {
      if (profileDialogBgBackBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        profileDialogBgBack_ = value;
      } else {
        profileDialogBgBackBuilder_.setMessage(value);
      }
      bitField0_ |= 0x10000000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public Builder setProfileDialogBgBack(
        Image.Builder builderForValue) {
      if (profileDialogBgBackBuilder_ == null) {
        profileDialogBgBack_ = builderForValue.build();
      } else {
        profileDialogBgBackBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x10000000;
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public Builder mergeProfileDialogBgBack(Image value) {
      if (profileDialogBgBackBuilder_ == null) {
        if (((bitField0_ & 0x10000000) != 0) &&
          profileDialogBgBack_ != null &&
          profileDialogBgBack_ != Image.getDefaultInstance()) {
          getProfileDialogBgBackBuilder().mergeFrom(value);
        } else {
          profileDialogBgBack_ = value;
        }
      } else {
        profileDialogBgBackBuilder_.mergeFrom(value);
      }
      if (profileDialogBgBack_ != null) {
        bitField0_ |= 0x10000000;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public Builder clearProfileDialogBgBack() {
      bitField0_ = (bitField0_ & ~0x10000000);
      profileDialogBgBack_ = null;
      if (profileDialogBgBackBuilder_ != null) {
        profileDialogBgBackBuilder_.dispose();
        profileDialogBgBackBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public Image.Builder getProfileDialogBgBackBuilder() {
      bitField0_ |= 0x10000000;
      onChanged();
      return getProfileDialogBgBackFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    public ImageOrBuilder getProfileDialogBgBackOrBuilder() {
      if (profileDialogBgBackBuilder_ != null) {
        return profileDialogBgBackBuilder_.getMessageOrBuilder();
      } else {
        return profileDialogBgBack_ == null ?
            Image.getDefaultInstance() : profileDialogBgBack_;
      }
    }
    /**
     * <code>.Image profileDialogBgBack = 1003;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getProfileDialogBgBackFieldBuilder() {
      if (profileDialogBgBackBuilder_ == null) {
        profileDialogBgBackBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getProfileDialogBgBack(),
                getParentForChildren(),
                isClean());
        profileDialogBgBack_ = null;
      }
      return profileDialogBgBackBuilder_;
    }
    @Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:PayGrade)
  }

  // @@protoc_insertion_point(class_scope:PayGrade)
  private static final PayGrade DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new PayGrade();
  }

  public static PayGrade getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<PayGrade>
      PARSER = new com.google.protobuf.AbstractParser<PayGrade>() {
    @Override
    public PayGrade parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      Builder builder = newBuilder();
      try {
        builder.mergeFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(builder.buildPartial());
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e)
            .setUnfinishedMessage(builder.buildPartial());
      }
      return builder.buildPartial();
    }
  };

  public static com.google.protobuf.Parser<PayGrade> parser() {
    return PARSER;
  }

  @Override
  public com.google.protobuf.Parser<PayGrade> getParserForType() {
    return PARSER;
  }

  @Override
  public PayGrade getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

